/*
 *  matrix.h
 *  T3nsors2
 *
 *  Created by Michael Barriault on 10-06-22.
 *  Copyright 2010 University of Guelph. All rights reserved.
 *
 */

#ifndef MATRIX_HEADER
#define MATRIX_HEADER
#include <string>
using std::string;

namespace t3 {
	class domain;
	class scalar;
	class vector;
	class matrix {
	private:
		vector** T;
		matrix(void);
		~matrix(void);
		int count;
	public:
		int N;
		string id;
		domain* O;
		static matrix* init(domain*,int,string);
		matrix* copy(matrix*);
		matrix* retain(void);
		void release(void);
		vector*& c(int);
		scalar*& c(int,int);
	};
	
	matrix* diff(vector*);
	scalar* div(vector*);
	vector* curl(vector*);
}

#endif
